Amazon ElastiCache (Redis)のMulti-AZを構成する
2014/10/28更新 : プライマリノードの切り替えについて追記しました。
ども、大瀧です。
本日、AWSのキャッシュサーバー as a ServiceのElastiCache(Redis)にMulti-AZ機能がリリースされました。早速試してみたので、レポートしてます!
Multi-AZ機能とは
Multi-AZ機能とは、Amazon RDSで提供されている、AWSのデータセンターであるアベイラビリティゾーン(AZ)レベルの障害に対応する可用性機能です。
ElastiCache(Redis)では、従来から複数AZへのキャッシュノードの配置とノード間レプリケーションがサポートされていましたが、プライマリーノードのフェイルオーバーが手動でした。キャッシュノードの障害検知とプライマリーノードの自動フェイルオーバーが今回のアップデートで追加されたと考えると良いでしょう。
RDSのMulti-AZと異なる点として、利用料金があります。RDSでは、Single-AZとMulti-AZで異なる料金設定(Multi-AZはSingle-AZの料金の1.X倍)でしたが、ElastiCacheではレプリカノードがフェイルオーバー先ノードとして扱われるため、Multi-AZを組むためには1ノード構成の最低2倍(レプリカを追加すれば3倍/4倍)のコストがかかります。
また、ElastiCacheではmemcachedを構成することもできますが、こちらはMulti-AZはサポートされません。複数AZにキャッシュノードを配置することはできますが、ノード間のレプリケーションは動作しないため、キャッシュノード側でデータの冗長性を確保することはできません。
構成手順
では、Multi-AZが有効なElastiCache(Redis)キャッシュクラスタを構成してみます。ElastiCacheの管理画面で[Get Started Now](クラスタ未作成の場合)ないし[Launch Cache Cluster]からクラスタ作成ウィザードを開きます。
[Select Engine]画面では、赤いRedisのアイコン画像をクリックし、[Next]をクリックします。
[Specify Cluster Details]画面では、クラスタの設定を選択していきます。[Multi-AZ]のチェックをオンにすることでMulti-AZが有効になります。
同じ画面の後半では、クラスタ名やノードタイプを選択します。Multi-AZを有効にするとノードタイプではt2.*を選択することができません。検証用に費用を抑えたい場合は、m1.smallなどを選択するとよいでしょう。今回はm3.mediumを選択しました。リードレプリカ数は、最大5まで選択できます。プライマリノード障害時には、これらのリードレプリカのいずれかが新しいプライマリノードとしてフェイルオーバーすることになります。[Next]をクリックします。
詳細設定画面では、VPCやAZの配置、バックアップ、メンテナンスウィンドウを設定します。AZの配置は既定で複数AZを選択するようになっています。それぞれ確認し、[Next]をクリックします。
確認画面では各設定を確認し、[Launch Cache Cluste]をクリックすると、キャッシュクラスター作成が開始します。Redisの場合はmemcachedと異なり、キャッシュクラスタあたり1ノードで、レプリケーショングループという単位でレプリケーションおよびMulti-AZが機能します。
クラスタ作成が完了したら、メニューの[Replication Groups]からレプリケーショングループを選択し、詳細画面下方の[Node Group Details]にある[Primary Endpoint]を確認します。通常、Redisクライアントからこのエンドポイントにアクセスします。他のレプリカノードはスタンバイではなくリードレプリカとして利用できるので、[Nodes]の[Read Endpoint]を利用することも可能です。
ちなみに、Multi-AZを有効にしていると表右側のDemote/Promoteボタンを押すことができません。プライマリノードの手動切り替えは、一度Multi-AZをオフにし、レプリカノードでPromoteを実行してプライマリを切り替えたのち、再度Multi-AZを有効化します。
まとめ
ElastiCache(Redis) Multi-AZにより、冗長性のあるキャッシュクラスタが組めるようになりました!
RDSよりもパフォーマンスが必要とされるケースの、有効な選択肢のひとつとして活用ください!